<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Task: Identify Testability Mechanisms</title>
<meta name="uma.type" content="Task">
<meta name="uma.name" content="identify_testability_mechanisms">
<meta name="uma.presentationName" content="Identify Testability Mechanisms">
<meta name="uma.category" content="Discipline:rup_test_discipline:测试">
<meta name="element_type" content="activity">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../css/default.css" type="text/css">
<script src="./../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../';
					var imgPath = './../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo, '', true, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top">
<div id="page-guid" value="{28208FC5-9C66-42D1-8E27-11DDE41EB654}"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Task: Identify Testability Mechanisms</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../images/task.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This task describes how to identify the general mechanisms of the technical solution that are needed to facilitate the test approach, and how to outline the general scope and key characteristics of those mechanisms. </td>
</tr>
<tr>
<td>Disciplines: <a href="./../../rup/disciplines/rup_test_discipline_9DFAFB2F.html" guid="_yd3EzdnmEdmO6L4XMImrsA">测试</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Roles</th><td class="sectionTableCell" width="42%"><span class="sectionTableCellHeading">Primary Performer:
								</span>
<ul>
<li>
<a href="./../../rup/roles/rup_test_designer_5F59E64F.html" guid="{84F723B5-288F-4AC4-B6C1-C75A07BFEEED}">测试设计人员</a>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">Additional Performers:
								</span></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Inputs</th><td class="sectionTableCell" width="42%"><span class="sectionTableCellHeading">Mandatory:
								</span>
<ul>
<li>
<a href="./../../rup/workproducts/rup_test_strategy_C1677B8.html" guid="{DC3E85E6-C5A9-4AC6-8DDF-E2CF2CB0573E}">测试策略</a>
</li>
<li>
<a href="./../../rup/workproducts/rup_software_architecture_document_C367485C.html" guid="{6F49641A-ED10-47B5-9E5D-3F90A6BF3006}">软件架构文档</a>
</li>
</ul>
<ul></ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">Optional:
								</span>
<ul>
<li>
<a href="./../../rup/workproducts/rup_deployment_model_57DF1DF5.html" guid="{5981B6BE-2FD1-4984-AA94-2F7428439BA6}">部署模型</a>
</li>
<li>
<a href="./../../rup/workproducts/rup_test_interface_specification_F1C8A203.html" guid="{020BA1FD-8940-4473-9C5B-0CA35FDDF4E6}">测试接口规约</a>
</li>
<li>
<a href="./../../rup/workproducts/rup_test_automation_architecture_650DD06A.html" guid="{B5B77528-E14B-43CA-BC73-D64A90A17E2D}">测试自动化架构</a>
</li>
<li>
<a href="./../../rup/workproducts/rup_project_specific_guidelines_8DC8DA32.html" guid="{E5501201-7EE6-4243-AE91-73880FF76FC1}">特定于项目的指南</a>
</li>
<li>
<a href="./../../rup/workproducts/rup_user_interface_prototype_7237E5AA.html" guid="{3DF10D00-8C80-4429-92B8-C6A221F0F90C}">用户界面原型</a>
</li>
</ul>
<ul></ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Outputs</th><td class="sectionTableCell" colspan="2">
<ul>
<li>
<a href="./../../rup/workproducts/rup_test_interface_specification_F1C8A203.html" guid="{020BA1FD-8940-4473-9C5B-0CA35FDDF4E6}">测试接口规约</a>
</li>
<li>
<a href="./../../rup/workproducts/rup_test_automation_architecture_650DD06A.html" guid="{B5B77528-E14B-43CA-BC73-D64A90A17E2D}">测试自动化架构</a>
</li>
</ul>
<ul></ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Steps</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="sectionTableSingleCell">
<div class="stepHeading"> Examine the software architecture and its target environments </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="ExamineArchitectureEnvironment" name="ExamineArchitectureEnvironment"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To gain an understanding of the software architecture and its relationship to the target deployment
                environments.&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    To perform this task within the appropriate context, it is important to have a good understanding of the software being
    developed, its architecture and the key mechanisms and features that it will support. Examine the available
    documentation for the software architecture to gain an initial understanding and supplement this with interviews or
    discussions with the software architect as required. Consider the impact that each target deployment environment might
    have on this information and note any important findings you think may be relevant to the test effort.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Identify candidate mechanisms for test </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="IdentifyCandidateMechanisms" name="IdentifyCandidateMechanisms"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To identify the potential test mechanisms that the testing approach will require.&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    Using your knowledge of the software architecture and its target environments, examine the information provided in the
    test approach. Consider the key technical aspects of the approach and assemble a list of candidate mechanisms that will
    be needed to support it. Here is a partial list of common mechanisms you should consider as candidates; persistence,
    concurrency, distribution, communication, security, transaction management, recovery, error detection handling &
    reporting, and process control & synchronization.
</p>
<p>
    Note that these mechanisms often apply to both manual and automated test efforts, although a specific mechanism may
    have more or less relevance to manual or automated testing. Also note that even where the same mechanism is required
    for both manual and automated test efforts, the characteristics of the implemented solution will usually differ.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Inventory the existing test mechanisms </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="InventoryExistingMechanisms" name="InventoryExistingMechanisms"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To identify opportunities to reuse existing implementations for the candidate mechanisms and identify which
                additional implementations will need to be developed.&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    Examine the available test tools and existing test implementations and create an inventory of mechanisms that have one
    or more existing solutions. While this step is more obviously relevant in terms of the automated test effort, there are
    some equivalent considerations for the manual test effort.
</p>
<p>
    <b>Sub-topics:</b>
</p>
<ul>
    <li>
        <a href="#ExistingAutomationMechanisms">Test automation mechanisms</a>
    </li>
    <li>
        <a href="#ExistingManualMechanisms">Manual test mechanisms</a>
    </li>
</ul>
<h4>
    <a id="ExistingAutomationMechanisms" name="ExistingAutomationMechanisms">Test automation mechanisms</a> <a href="#InventoryExistingMechanisms"><img src="./../../rup/resources/top.gif" alt="To top of page" border="0" width="20"     height="15" /></a>
</h4>
<p>
    Start by compiling a list of the tools available to you or that you plan to purchase. Remember that automation tools
    take many forms and your list will usually include more than the automated test implementation and execution tools. For
    each tool, examine the mechanisms provided by the tool. For example, does the scripting tool you plan to use provide
    its own data persistency mechanism, and if so, is it appropriate for your needs or will you need to supplement it?
    Other questions might include; Does the execution tool allow concurrent execution of test scripts on multiple host
    client machines? Does the execution tool allow distribution of scripts from a central master machine to multiple host
    client machines?
</p>
<p>
    Where existing test automation implementations are available, there will be additional mechanisms to inventory. Some
    aspects of these implementations will extend or supplement the basic mechanisms provided by the tools to make them more
    useful. Other aspects will offer implementations for additional mechanisms not provided in the base tool.
    <!--- See [[[Guidelines: Test Automation Architecture]]] 
    for further suggestions.</p>=-->
</p>
<h4>
    <a id="ExistingManualMechanisms" name="ExistingManualMechanisms">Manual test mechanisms</a> <a href="#InventoryExistingMechanisms"><img src="./../../rup/resources/top.gif" alt="To top of page" border="0" width="20"     height="15" /></a>
</h4>
<p>
    At a basic level, this will involve reviewing the test guidelines that exist for test implementation and execution. You
    should look for existing process solutions for issues such as concurrency-how testers can share data sets, especially
    existing data beds without adversely affecting each other; distribution-if the test team is distributed, what solutions
    are available to coordinate the separate test efforts. <!--- See [[[Guidelines: Test Guidelines (Test Approach)]]] 
    for further suggestions.=-->
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Define the test mechanisms you will use </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="DefineUsedMechanisms" name="DefineUsedMechanisms"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To communicate the decisions made about the required test mechanisms.&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    Now that you've decided on the test mechanisms required, you need to communicate your choices to the test team and
    other stakeholders in the test effort. We recommend you document the decisions about the test mechanisms required for
    automation as part of the the Test Automation Architecture documentation, and those that relate to manual testing as
    part of the Test Guidelines.
</p>
<p>
    As an alternative to formal documentation, you might choose to simply record this information as a set of informal
    architecture and process notes accompanied by some explanatory diagrams, possibly retained on a white-board. During
    test implementation and execution individual testers will make use of this information to make tactical decisions.
</p>
<p>
    Where you have identified the potential requirement for special test interfaces that will need to be built into the
    software being developed, you should consider recording this requirement by creating one or more outlined Test
    Interface Specifications; this outline should provide a name, brief description and enumerate the main test interface
    requirements or features. Avoid spending a lot of time on these outlines; the list of requirements and features will be
    subsequently detailed in <a class="elementLinkWithType" href="./../../rup/tasks/define_testability_elements_B792858D.html" guid="{CDA7EC1B-2D50-46BE-A3BA-C621EAF22D84}">Task: 定义可测性元素</a>.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> Evaluate and verify your results </div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><a id="EvaluateResults" name="EvaluateResults"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>Purpose:</b>&nbsp;
            </td>
            <td width="95%">
                To verify that the task has been completed appropriately and that the resulting work products are
                acceptable.&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    Now that you have completed the work, it is beneficial to verify that the work was of sufficient value, and that you
    did not simply consume vast quantities of paper. You should evaluate whether your work is of appropriate quality, and
    that it is complete enough to be useful to those team members who will make subsequent use of it as input to their
    work. Where possible, use the checklists provided in NUP to verify that quality and completeness are "good enough".
</p>
<p>
    Have the people performing the downstream tasks that rely on your work as input take part in reviewing your interim
    work. Do this while you still have time available to take action to address their concerns. You should also evaluate
    your work against the key input work products to make sure you have represented them accurately and sufficiently. It
    may be useful to have the author of the input work product review your work on this basis.
</p>
<p>
    Try to remember that that NUP is an iterative delivery process and that in many cases work products evolve over time.
    As such, it is not usually necessary-and is often counterproductive-to fully-form a work product that will only be
    partially used or will not be used at all in immediately subsequent work. This is because there is a high probability
    that the situation surrounding the work product will change-and the assumptions made when the work product was created
    proven incorrect-before the work product is used, resulting in wasted effort and costly rework. Also avoid the trap of
    spending too many cycles on presentation to the detriment of content value. In project environments where presentation
    has importance and economic value as a project deliverable, you might want to consider using an administrative resource
    to perform presentation tasks.
</p><br />
<br /></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
